package com.cctc.juc.source.Athread;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

/**
 * [Callable 交互] 接口
 * 描述信息：Future 依赖于 Callable，可以对 Callable 异步任务执行过程进行控制 & 交互、获取 Callable 的执行结果。
 * 核心功能：
 * - 对 Callable 执行过程进行控制 & 交互：取消正在执行的 Callable、判断 Callable 是否执行完成；
 * - 获取 Callable 执行结果：（阻塞式）获取 Callable 的执行结果。
 */
public interface DFuture<V> {
    boolean cancel(boolean mayInterruptRunning);

    boolean isCannelled();

    V get() throws InterruptedException, ExecutionException;

    V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;
}
